package com.samphanie.admin.modules.sys.domain.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.samphanie.mbg.model.sys.SysMenu;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.function.Function;

/**
 * @author ZSY
 * @date 2021/11/16 17:06
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class MenuVo implements Serializable {
    private static final long serialVersionUID = 6587460085664318564L;

    /**
     * ID
     */
    private Long id;
    /**
     * 父级ID
     */
    private Long parentId;
    /**
     * 菜单名称
     */
    private String name;
    /**
     * 路径,可以设定为网页链接
     */
    private String path;
    /**
     * 菜单图标
     */
    private String icon;
    /**
     * 组件名称
     */
    private String component;
    /**
     * 在菜单中隐藏子节点
     */
    private Boolean hideChildrenInMenu;
    /**
     * 在菜单中隐藏自己和子节点
     */
    private Boolean hideInMenu;
    /**
     * 在面包屑中隐藏
     */
    private Boolean hideInBreadcrumb;
    /**
     * 自定义菜单的国际化
     */
    private String locale;
    /**
     * 隐藏自己，并且将子节点提升到与自己平级
     */
    private Boolean flatMenu;
    /**
     * 重定向路径
     */
    private String target;
    /**
     * 菜单权限
     */
    private String access;
    /**
     * 菜单排序
     */
    private Integer sort;
    private Date createTime;
    private String remark;
    /**
     * 子菜单
     */
    @JsonInclude(value = JsonInclude.Include.NON_EMPTY)
    private List<MenuVo> children;
}
